#ifndef __IANGELS_LOG_H__
#define __IANGELS_LOG_H__

#ifndef _NDEBUG
    #define FILE_NAME (strrchr(__FILE__,'/') ? strrchr(__FILE__,'/') + 1 : __FILE__)
    #define LOG(LEVEL, FORMAT, ...) printf("[%s][%s][%s]:[%d] " FORMAT "\n", #LEVEL, FILE_NAME, __FUNCTION__,__LINE__,##__VA_ARGS__)
#else
    #define LOG(LEVEL, FORMAT, ...) NULL
#endif

#define LOG_ERROR(FORMAT, ...) LOG(ERROR, FORMAT, ##__VA_ARGS__)
#define LOG_WARN(FORMAT, ...) LOG(WARN, FORMAT, ##__VA_ARGS__)
#define LOG_INFO(FORMAT, ...) LOG(INFO, FORMAT, ##__VA_ARGS__)
#define LOG_DEBUG(FORMAT, ...) LOG(DEBUG, FORMAT, ##__VA_ARGS__)


#endif // __IANGELS_LOG_H__